// function test(template, name, age) {
//   console.log(template)
//   console.log(name)
//   console.log(age)
// }


// var myname: any = "wsl";
// myname = 13
// var getAge = function () {
//   return 18;
// }
// test`hello my name is ${myname},I’m ${getAge()}`
// var myname: string = 'wsl';
// // myname='ls'
// var alias: any = 'xixi'
// //  alias=12
// var man: boolean = true;
// man = false;
// function test(name: string, age: number): string {
//   console.log(name)
//   return ""
// }

// test('wsl', 18)
// class Person {
//   name: string;
//   age: number;
// }

// var zhangsan: Person = new Person();
// zhangsan.name = 'wsl'
// zhangsan.age = 18

// function test1(a: string, b: string, c: string = 'jojo') {
//   console.log(a)
//   console.log(b)
//   console.log(c)
// }
// test1('xxx', 'yyy', 'ddd')
// test1('xxx', 'yyy')

// function func1(a, b, c) {
//   console.log(a)
//   console.log(b)
//   console.log(c)
// }
// var args = [1, 2]
// func1(...args)
// var args2 = [4, 5, 6, 7, 8, 9]
// func1(...args2)

// function* dosomething() {
//   console.log("!11111111111111")
//   yield;
//   console.log("@2222222222222222")
//   yield;
//   console.log("@3333333333333333")
// }
// var func = dosomething()
// func.next()
// func.next()
// func.next()


// function* getStockPrice(stock) {
//   while (true) {
//     yield Math.random() * 100;
//   }
// }
// var priceGenerator = getStockPrice("IBM");
// var limitPrice = 15;
// var price = 100;
// while (price > limitPrice) {
//   price = priceGenerator.next().value;

//   console.log(`-------${price}-----`)
// }
// console.log(`buying at ${price}`)

// function getStork() {
//   return {
//     code: 'IBM',
//     price: {
//       price1: 200,
//       price2: 400
//     },
//     aaa: "xixi",
//     bbb: "haha"
//   }
// }
// var { code: codex, price: { price1 } } = getStork();
// console.log(codex)
// console.log(price1)

// var arr = [1, 2, 3, 4]
// var [number1, number2, ...others] = arr
// console.log(number1)
// console.log(number2)
// console.log(others);

// var arr = [1, 2, 3, 4]
// function dosomething([number1, number2, ...others]) {
//   console.log(number1)
//   console.log(number2)
//   console.log(others);
// }
// dosomething(arr)

// var sum = arg1 => {
//   console.log(arg1);
// }
// myArray.forEach(value => console.log(value))

// var myArray = [1, 2, 3, 4, 5, 6];
// // myArray.desy = 'aaaaa'
// for (var n in myArray) {
//   console.log(n);
// }
// console.log("!222222222222222222222222");
// console.log("!4444444444444444444");
// var img = document.querySelector("#image") as HTMLImageElement
// console.dir(img)
// img.src = './介绍图/4.ts字符串自动拆分特性.jpg'

// enum Gender {
//   Female,
//   Male
// }
// let userGender: Gender = Gender.Male
// console.log(userGender)
// console.log(Gender.Female)
// console.log(Gender.Male);





// class Person {
//   constructor(public name: string) {
//     // console.log("haha")
//     console.log(name);
//   }
//   // name;
//   eat() {
//     // console.log(this.name)
//     console.log("xixi")

//   }
// }
// var p1 = new Person("haha");
// p1.name = 'batman';
// p1.eat()

// var p2 = new Person("xixi");
// p2.name = 'superman';
// p2.eat()

// class Employee extends Person {
//   constructor(name: string, code: string) {
//     super(name)
//     this.code = code
//   }
//   code: string;
//   work() {
//     super.eat()
//     this.doWork()
//   }
//   private doWork() {
//     console.log("开始工作了");

//   }
// }
// var e1 = new Employee("name", "1")
// // console.log(e1.work);
// e1.work()


// // console.log(Person)
// var workers: Array<Person> = []
// workers[0] = new Person("zhangsan")
// workers[1] = new Person("lisi")
// workers[2] = 2

interface IPerson {
  name: string;
  age: number;
}
class Person {
  constructor(public config: IPerson) {
    console.log(config)
  }
}
var p1 = new Person({
  name: 'zs',
  age: 18
})

interface Animal {
  eat()
}
class Sheep implements Animal {
  eat() {
    console.log("我吃草")
    // $("#aaa").
  }
}
var p2 = new Sheep()
p2.eat()